package com.jeans.servlet;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jeans.comparator.ComparatorClienteCodigo;
import com.jeans.comparator.ComparatorClienteEmail;
import com.jeans.comparator.ComparatorClienteTelefone;
import com.jeans.dao.ClienteDAO;
import com.jeans.model.Cliente;

public class ListaClientesArray extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response){
		
		List<Cliente> clientes;
		Object[] clientesArray;
		String criterioOrdenacao;
		
		@SuppressWarnings("rawtypes")
		Comparator c = null;
		
		try {
			
			// Obtem a lista de clientes da sessao Http
			clientes = (List<Cliente>) request.getSession().getAttribute("lista_clientes");
			
			if(clientes == null){
				clientes = ClienteDAO.getInstance().getAll();
				request.getSession().setAttribute("lista_clientes", clientes);
			}
			
			clientesArray = clientes.toArray(); // transforma a lista num array
			criterioOrdenacao = request.getParameter("criterioOrdenacao");
			
			if(criterioOrdenacao.equals("email")){
				c = new ComparatorClienteEmail();
			}else if (criterioOrdenacao.equals("telefone")) {
				c = new ComparatorClienteTelefone();
			}else if (criterioOrdenacao.equals("codigo")) {
				c = new ComparatorClienteCodigo();
			}
			
			if(c != null){
				// ordena de acordo com o criterio escolhido
				Arrays.sort(clientesArray, c);
			}else{
				// ordena por ordem natural da classe de clientes
				Arrays.sort(clientesArray);
			}
			
			// coloca objetos na request para serem utilizados  na pagina
			request.setAttribute("clientes", clientesArray);
			request.setAttribute("ordenacao", criterioOrdenacao);
			request.setAttribute("tipoColecao", "Array");
			request.setAttribute("clientes", clientesArray);
			
			getServletContext().getRequestDispatcher("/lista.jsp").forward(request, response);
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		
		
		
		
		
		
		
		
	}
	
	
	
	
	
}
